package 普通数组;

/**
 * @author tmh
 * @date 2024/11/27 20:09
 * @description
 */
public class T238除自身以外数组的乘积 {
    public static int[] productExceptSelf(int[] nums) {
        int len = nums.length;
        int temp = 1;
        //result先用来保存每个数字右边的乘积
        int[] result = new int[len];
        //第一个数字左边部分的乘积是1
        result[0] = 1;
        for (int i = 1; i < len; i++) {
            //当前数字左边部分的乘积=上一个数字左边部分的乘积*上一个数
            result[i] = result[i - 1] * nums[i - 1];
        }
        //计算总的结果
        for (int i = len - 2; i >= 0; i--) {
            //temp计算之后就是每个数右边部分的乘积
            temp = temp * nums[i + 1];
            //结果= 左边部分的乘积* 右边部分的乘积
            result[i] = result[i] * temp;
        }
        return result;
    }
}
